home *** CD-ROM | disk | FTP | other *** search
- /* xsptest.c */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <sys/iocs.h>
- #include "XSP2lib.H"
-
- #define PCG_MAX 32 /* パターンデータの個数 */
- #define FRM_MAX 128 /* フレームデータの個数 */
- #define REF_MAX 128 /* リファレンスデータの個数 */
-
- static char pcg_alt[PCG_MAX + 1]; /* PCG配置管理テーブル */
- static char pcg_dat[PCG_MAX * 128]; /* PCGデータファイル読み込みバッファ */
- static XOBJ_REF_DAT ref_dat[REF_MAX]; /* リファレンスデータ */
- static XOBJ_FRM_DAT frm_dat[FRM_MAX]; /* フレームデータ */
-
- static unsigned short pal_dat[16][15]; /* パレットデータ */
-
-
- int main (int argc, char *argv[])
- {
- FILE *fp;
- int i, j, r;
-
- _iocs_crtmod (10); /* 256x256ドット グラフィック画面 256色 2画面 */
- _iocs_sp_init (); /* スプライトの初期化 */
- _iocs_sp_on ();
-
- /* pcg_dat にパターンデータを読み込む */
- fp = fopen ("PLAYER.XSP", "rb");
- fread (pcg_dat, sizeof (char), PCG_MAX * 128, fp);
- fclose (fp);
-
- /* frm_dat にフレームデータを読み込む */
- fp = fopen ("PLAYER.FRM", "rb");
- fread (frm_dat, sizeof (XOBJ_FRM_DAT), FRM_MAX, fp);
- fclose (fp);
-
- /* ref_dat にリファレンスデータを読み込む */
- fp = fopen ("PLAYER.REF", "rb");
- r = fread (ref_dat, sizeof (XOBJ_REF_DAT), REF_MAX, fp);
- fclose (fp);
-
- /* REF_DAT[].ptr 補正 */
- for (i = 0; i < r; i++)
- (int) ref_dat[i].ptr += (int) frm_dat;
-
-
- /* pal_buf に一旦パレットデータを読み込む */
- fp = fopen ("PLAYER.PAL", "rb");
- fread (pal_dat, sizeof (unsigned short), 16 * 15, fp);
- fclose (fp);
- /* パレットデータを定義 */
- /* (1パレットブロック=16色) × (15ブロックぶん) 定義する */
- {
- unsigned short *p = (unsigned short *) pal_dat;
- for (i = 1; i < 15; i++)
- for (j = 0; j < 16; j++)
- _iocs_spalet (0x80000000 | j, i, *p++);
- }
-
- xsp_on ();
- xsp_mode (3);
- /* パターンデータを定義 */
- xsp_pcgdat_set (pcg_dat, pcg_alt, sizeof (pcg_alt));
- xsp_objdat_set (ref_dat);
-
- /* 座標(144,144), 複合スプライト No.0, パレット7, 優先順位 $3f */
- xobj_set (144, 144, 0, 0x073f);
- xsp_out (); /* 表示 */
-
- printf("何かキーを押して下さい\n");
- getche ();
- xsp_off ();
-
- _iocs_crtmod (16);
- return (0);
- }
-